package com.yantong.controller;

import com.yantong.service.CentreCategoryService;
import com.yantong.pojo.vo.CentreCategoryVo;
import com.yantong.result.ResultVo;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
 * 商户控制类
 *
 * @author kanghaixin
 * @date 2018/8/24.16:22
 */
@Controller
@RequestMapping("/centre/category")
public class CentreCategoryController {

    private static final String prefix = "centre/category";

    @Autowired
    private CentreCategoryService centreCategoryService;

    /**
     * 跳转分类页面
     *
     * @return
     */
    @GetMapping()
    @RequiresPermissions("centre:category:categorys")
    public String category() {
        return prefix + "/categorys";
    }

    /**
     * 列表
     *
     * @return
     * @author dcx
     * @date 2018年8月28日-上午11:41:11
     */
    @GetMapping("/list")
    @ResponseBody
    @RequiresPermissions("centre:category:categorys")
    public List<CentreCategoryVo> listCategorys() {
        return centreCategoryService.listCategorys();

    }

    /**
     * 跳转新增页面
     *
     * @return
     * @author dcx
     * @date 2018年8月30日-下午8:21:37
     */
    @GetMapping("/toAdd")
    @RequiresPermissions("centre:category:add")
    public String toAdd(Model model) {
        model.addAttribute("baTypes", centreCategoryService.listCategorys(0L));
        return prefix + "/add";
    }

    /**
     * 新增
     *
     * @param category
     * @return
     * @author dcx
     * @date 2018年8月28日-上午11:41:19
     */
    @RequiresPermissions("centre:category:add")
    @PostMapping("/save")
    @ResponseBody
    public ResultVo save(CentreCategoryVo category) {
        if (category == null) {
            return ResultVo.error();
        }
        if (centreCategoryService.save(category) < 1) {
            return ResultVo.error();
        }
        return ResultVo.ok();
    }

    /**
     * 跳转到编辑页面
     *
     * @param centreId
     * @param model
     * @return
     * @author dcx
     * @date 2018年8月28日-下午2:12:57
     */
    @RequiresPermissions("centre:category:edit")
    @GetMapping("/edit/{id}")
    public String edit(@PathVariable Long id, Model model) {
        model.addAttribute("obj", centreCategoryService.getByKey(id));
        model.addAttribute("baTypes", centreCategoryService.listCategorys(0L));
        return prefix + "/edit";
    }

    /**
     * 更新分类
     *
     * @param obj
     * @return
     * @author dcx
     * @date 2018年8月28日-下午2:13:49
     */
    @RequiresPermissions("centre:category:edit")
    @PostMapping("/update")
    @ResponseBody
    public ResultVo update(CentreCategoryVo obj) {
        if (obj == null || obj.getId() == null) {
            return ResultVo.error();
        }

        if (centreCategoryService.update(obj) < 1) {
            return ResultVo.error();
        }
        return ResultVo.ok();
    }

    /**
     * 删除分类
     *
     * @param id
     * @return
     * @author dcx
     * @date 2018年8月28日-下午2:20:00
     */
    @RequiresPermissions("centre:category:remove")
    @PostMapping("/remove")
    @ResponseBody
    public ResultVo remove(Long id) {
        if (id == null) {
            return ResultVo.error();
        }
        if (centreCategoryService.remove(id) < 1) {
            return ResultVo.error();
        }
        return ResultVo.ok();
    }

    /**
     * 根据父类id获取子类列表
     * @param id
     * @return
     * @author dcx
     * @date 2018年9月3日-下午4:40:44
     */
    @RequiresPermissions("centre:category:getChildByPar")
    @GetMapping("/getChildByPar")
    @ResponseBody
    public List<CentreCategoryVo> getChildByPar(Long id) {
        if (id == null) {
            return new ArrayList<>();
        }
        return centreCategoryService.listCategorys(id);
    }


    /**
     * 获取下级类目列表
     * @param parentId
     * @return
     */
    @ResponseBody
    @PostMapping("/ccates")
    public ResultVo getCcateList(Long parentId) {
        if (parentId == null) {
            return ResultVo.error();
        }
        return ResultVo.ok().put("ccates", centreCategoryService.listCategorys(parentId));
    }

    /**
     * 获取分类信息详情
     * @param categoryId
     * @return
     */
    @ResponseBody
    @PostMapping("/getCategoryDetail")
    public ResultVo getCategoryDetail(Long categoryId) {
        if (categoryId == null) {
            return ResultVo.error();
        }
        return ResultVo.ok().put("category", centreCategoryService.getByKey(categoryId));
    }



}
